// 配置用户登录模块
// 引入API中的axios请求
import { loginAsync } from '@/api/login'

// 创建登录模块
const userModule = {
  state: {
    // 保存用户信息
    userInfo: null,
    token: null,
  },
  mutations: {
    // 想state中传递数据
    SET_USERINFO(state, payload) {
      state.userInfo = payload
    },
    SET_TOKEN(state, payload) {
      state.token = payload
    },
    // 重置用户信息
    RESET(state) {
      state.userInfo = null
      state.token = null
    },
  },
  actions: {
    // action 方法，实现用于异步登录，将登录成功的状态数据
    // 保存到 state 中（在 action 中提交 mutation 来更新状态）
    login(store, payload) {
      return loginAsync(payload)
        .then(data => { // 登录成功
        // 将响应返回的数据解构
          const { username, nikname, avatarUrl, token } = data
          store.commit('SET_USERINFO', { username, nikname, avatarUrl })
          store.commit('SET_TOKEN', token)
          return data
        })
        .catch(err => { // 错误信息
          console.log('异常：', err)
          store.commit('RESET')
        })
    },
  },
}
export default userModule
